package com.huc.tools.tools.string;

/**
 * @Author: 胡成
 * @Version: 0.0.1V
 * @Date: 2018/8/8
 * @Description: 字符串工具类
 **/
public class StringTools {
    public static final String EMPTY_STRING = "";

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 9:09
     * @Description: 判断字符串是否为null或者""
     **/
    public static boolean isEmpty(String str) {
        return ((str == null) || (str.length() == 0));
    }

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 9:11
     * @Description: 判断字符串是否不为null或者""
     **/
    public static boolean isNotEmpty(String str) {
        return ((str != null) && (str.length() > 0));
    }

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 9:15
     * @Description: 判断字符串是否为空格或者null、""
     **/
    public static boolean isBlank(String str) {
        if ((str == null) || (str.length() == 0)) {
            return true;
        }
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isWhitespace(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 9:21
     * @Description: 判断字符串是否不为空格或者null、""
     **/
    public static boolean isNotBlank(String str) {
        if ((str == null) || (str.length() == 0)) {
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isWhitespace(str.charAt(i))) {
                return true;
            }
        }
        return false;
    }

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 9:26
     * @Description: null转换""
     **/
    public static String defaultIfNull(String str) {
        return (str == null) ? EMPTY_STRING : str;
    }

    /**
     * @param str
     * @param defaultStr
     * @Author: 胡成
     * @Date: 2018/8/8 9:29
     * @Description: null转换成指定字符串
     **/
    public static String defaultIfNull(String str, String defaultStr) {
        return (str == null) ? defaultStr : str;
    }

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 9:32
     * @Description: ""字符串转换""
     **/
    public static String defaultIfEmpty(String str) {
        return (str == null) ? EMPTY_STRING : str;
    }

    /**
     * @param str
     * @param defaultStr
     * @Author: 胡成
     * @Date: 2018/8/8 9:36
     * @Description: ""字符串转换指定字符串
     **/
    public static String defaultIfEmpty(String str, String defaultStr) {
        return ((str == null) || (str.length() == 0)) ? defaultStr : str;
    }

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 9:40
     * @Description: 空白字符串转换成默认""
     **/
    public static String defaultIfBlank(String str) {
        return isBlank(str) ? EMPTY_STRING : str;
    }

    /**
     * @param str
     * @param defaultStr
     * @Author: 胡成
     * @Date: 2018/8/8 9:46
     * @Description: 空白字符串转换指定字符串
     **/
    public static String defaultIfBlank(String str, String defaultStr) {
        return isBlank(str) ? defaultStr : str;
    }

    /***************************************************************************************************************/
    /****************************************************比较函数***************************************************/
    /***************************************************************************************************************/

    /**
     * @param str1
     * @param str2
     * @Author: 胡成
     * @Date: 2018/8/8 9:58
     * @Description: 如果字符串都为空则返回true
     **/
    public static boolean equals(String str1, String str2) {
        if (str1 == null) {
            return str2 == null;
        }
        return str1.equals(str2);
    }

    /**
     * @param str1
     * @param str2
     * @Author: 胡成
     * @Date: 10:13
     * @Description: 比较两个字符串, 大小写不敏感
     **/
    public static boolean equalsIgnoreCase(String str1, String str2) {
        if (str1 == null) {
            return str2 == null;
        }
        return str1.equalsIgnoreCase(str2);
    }

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 10:20
     * @Description: 是否是unicode字符串
     **/
    public static boolean isAlpha(String str) {
        if (str == null) {
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isLetter(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    /**
     * @param str
     * @Author: 胡成
     * @Date: 2018/8/8 10:24
     * @Description: 判断字符串是否为数字
     **/
    public static boolean isNumber(String str) {
        if (str == null) {
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }


    public static void main(String[] args) {
        String str = "1  2";
//        System.out.println("isEmpty:" + isEmpty(str));
//        System.out.println("isNotEmpty:" + isNotEmpty(str));
//        System.out.println("isBlank:" + isBlank(str));
//        System.out.println("isNotBlank:" + isNotBlank(str));
//        System.out.println("defaultIfNull:" + defaultIfNull(str));
//        System.out.println("defaultIfNull:" + defaultIfNull(str, "123321"));
//        System.out.println("defaultIfBlank:" + defaultIfBlank(str));
//        System.out.println("defaultIfBlank:" + defaultIfBlank(str, "123"));
//        System.out.println(equals(null,null));
//        System.out.println(equalsIgnoreCase("asd", "ASD"));
//        System.out.println(isAlpha("asdasdas"));
//        System.out.println(isNumber("123321"));

    }

}
